﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;


public class UsuariosData
{
	private string stringConexion;

	public UsuariosData(string strConexion)
	{
		stringConexion = strConexion;
	}

	public DataSet GetUsuarios()
	{
		//Variable usada para retornar el resultado
		DataSet resultado = new DataSet();
		try
		{
			//Creo un adaptador para conectar a la base de datos y ejecutar el SP que obtiene los usuarios
			SqlDataAdapter adapter = new SqlDataAdapter("sp_GetUsuarios", stringConexion);
			adapter.SelectCommand.CommandType = CommandType.StoredProcedure;

			//Lleno la variable de resultado para mostrar en la pagina
			adapter.Fill(resultado);
		}
		catch (Exception ex)
		{
			//Propago la excepcion para poder mostrarla en pantalla
			throw ex;
		}

		return resultado;
	}
	
	public void AgregarUsuario(DUsuario usuario)
	{
		try
		{
			//Creo una conexion a la base de datos y la abro
			SqlConnection conexion = new SqlConnection(stringConexion);
			conexion.Open();

			//Creo un objeto SqlCommand en la conexion que acabo de crear para llamar al SP
			SqlCommand cmd = new SqlCommand("sp_AgregarUsuario", conexion);
			cmd.CommandType = CommandType.StoredProcedure;

			//Agrego los parametros necesarios en el llamado del SP
			SqlParameter param = new SqlParameter("@nombre", SqlDbType.VarChar);
			param.Value = usuario.nombre;
			cmd.Parameters.Add(param);

			param = new SqlParameter("@contrasenia", SqlDbType.VarChar);
			param.Value = usuario.contrasenia;
			cmd.Parameters.Add(param);

			//Ejecuto el SP
			cmd.ExecuteNonQuery();

			//Cierro la conexion
			conexion.Close();
		}
		catch (Exception ex)
		{
			//Propago la excepcion para poder mostrarla en pantalla
			throw ex;
		}
	}

	public void ModificarUsuario(DUsuario usuario)
	{
		try
		{
			//Creo una conexion a la base de datos y la abro
			SqlConnection conexion = new SqlConnection(stringConexion);
			conexion.Open();

			//Creo un objeto SqlCommand en la conexion que acabo de crear para llamar al SP
			SqlCommand cmd = new SqlCommand("sp_ModificarUsuario", conexion);
			cmd.CommandType = CommandType.StoredProcedure;

			//Agrego los parametros necesarios en el llamado del SP
			SqlParameter param = new SqlParameter("@nombre", SqlDbType.VarChar);
			param.Value = usuario.nombre;
			cmd.Parameters.Add(param);

			param = new SqlParameter("@contrasenia", SqlDbType.VarChar);
			param.Value = usuario.contrasenia;
			cmd.Parameters.Add(param);

			//Ejecuto el SP
			cmd.ExecuteNonQuery();

			//Cierro la conexion
			conexion.Close();
		}
		catch (Exception ex)
		{
			//Propago la excepcion para poder mostrarla en pantalla
			throw ex;
		}
	}

	public void EliminarUsuario(DUsuario usuario)
	{
		try
		{
			//Creo una conexion a la base de datos y la abro
			SqlConnection conexion = new SqlConnection(stringConexion);
			conexion.Open();

			//Creo un objeto SqlCommand en la conexion que acabo de crear para llamar al SP
			SqlCommand cmd = new SqlCommand("sp_EliminarUsuario", conexion);
			cmd.CommandType = CommandType.StoredProcedure;

			//Agrego los parametros necesarios en el llamado del SP
			SqlParameter param = new SqlParameter("@nombre", SqlDbType.VarChar);
			param.Value = usuario.nombre;
			cmd.Parameters.Add(param);

			//Ejecuto el SP
			cmd.ExecuteNonQuery();

			//Cierro la conexion
			conexion.Close();
		}
		catch (Exception ex)
		{
			//Propago la excepcion para poder mostrarla en pantalla
			throw ex;
		}
	}
	
	public string AutenticarUsuario(string usuario, string contrasenia)
	{
		//Variable usada para retornar el resultado
		DataSet resultado = new DataSet();
		try
		{
			//Creo un adaptador para conectar a la base de datos y ejecutar el SP que obtiene los usuarios
			SqlDataAdapter adapter = new SqlDataAdapter("sp_AutenticarUsuario", stringConexion);
			adapter.SelectCommand.CommandType = CommandType.StoredProcedure;

			//Agrego los parametros necesarios en el llamado del SP
			SqlParameter param = new SqlParameter("@nombre", SqlDbType.VarChar); param.Value = usuario;
			adapter.SelectCommand.Parameters.Add(param);
			param = new SqlParameter("@contrasenia", SqlDbType.VarChar); param.Value = contrasenia;
			adapter.SelectCommand.Parameters.Add(param);

			//Lleno la variable de resultado para mostrar en la pagina
			adapter.Fill(resultado);
			
			if(Utiles.TieneDatos(resultado))
				return resultado.Tables[0].Rows[0]["nombre"].ToString();
		}
		catch (Exception ex)
		{
			//Propago la excepcion para poder mostrarla en pantalla
			throw ex;
		}
		
		return null;
	}
}
